package com.probiz.estore.catalog.dao;

import java.util.List;

import com.probiz.estore.catalog.model.GiftCategorySearchCriteria;
import com.probiz.estore.common.model.catalog.GiftCategory;
import com.probiz.estore.core.search.SearchCriteria;
/**
 * Dao interface for GiftCategory.
 */
public interface GiftCategoryDao extends  BaseCategoryDao<GiftCategory>  {
	/**
	 * 根据指定目录编码获取目录
	 * 
	 * @param categoryCode
	 *            目录编码
	 * @return 含指定目录编码的目录
	 */
	public GiftCategory getCategoryByCode(String categoryCode);

	/**
	 * 根据上级目录id和目录名称找寻目录
	 * 
	 * @param parentCategoryId
	 * @param categoryName
	 * @return
	 */
	public List<GiftCategory> listCategoryByParentIdAndName(
			Integer parentCategoryId, String categoryName);

	/**
	 * 搜索礼品目录
	 * 
	 * @param giftCategorySearchCriteria
	 *            自定义搜索条件
	 * @param searchCriteria
	 *            分页搜索条件
	 * @return 礼品目录搜索结果列表
	 */
	public List<GiftCategory> searchByCriteria(
			GiftCategorySearchCriteria giftCategorySearchCriteria,
			SearchCriteria searchCriteria);

	/**
	 * 获取导航目录，即获得上级目录和自身目录，但不包括根目录
	 * 
	 * @param categoryId
	 *            目录主键
	 * @return 导航目录。例如 诺基亚的导航目录是[通讯设备，手机]
	 */
	public List<GiftCategory> getNavigationCategories(Integer categoryId);

	/**
	 * 根据目录编码找出目录个数，但该目录的不能是参数id所指定的目录
	 * 
	 * @param categoryCode
	 *            目录编码
	 * @param categoryId
	 *            目录id
	 * @return 个数
	 */
	public Long getSizeByCategoryCodeByNotCategoryId(String categoryCode,
			Integer categoryId);
	
	/**
	 * 根据礼品目录查询出所有的目录下的礼品，用于目录删除。
	 * @param categoryPath
	 * @return
	 */
	public List<GiftCategory> getCategorysByCategoryPath(String categoryPath);

}